package graph;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * 卡105.有向图的完全可达性  12.29
 * 链接
 * 题目描述
 * 给定一个有向图，包含 N 个节点，节点编号分别为 1，2，...，N。现从 1 号节点开始，如果可以从 1 号节点的边可以到达任何节点，则输出 1，否则输出 -1。
 * 输入描述
 * 第一行包含两个正整数，表示节点数量 N 和边的数量 K。 后续 K 行，每行两个正整数 s 和 t，表示从 s 节点有一条边单向连接到 t 节点。
 * 输出描述
 * 如果可以从 1 号节点的边可以到达任何节点，则输出 1，否则输出 -1。
 */
public class ReachabilityOfDirectedGraphs {
    public static void dfs(int[][] graph, int x, int n, Set<Integer> set) {
        set.add(x);
        for (int j = 1; j < graph[x].length; j++) { // 从1开始遍历
            if (graph[x][j] == 1 && !set.contains(j)) { // 判断节点j是否访问过
                dfs(graph, j, n, set);
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int[][] graph = new int[n + 1][n + 1];

        for (int i = 0; i < k; i++) {
            int s = sc.nextInt();
            int t = sc.nextInt();
            graph[s][t] = 1;
        }
        Set<Integer> set = new HashSet<>();
        dfs(graph, 1, n, set);
        if (set.size() == n) {
            System.out.println(1);
        } else {
            System.out.println(-1);
        }
    }
}

